<?php
class Tablas extends Controller
{
	function Tablas()
	{
		parent::Controller();
		$this->load->helper('url');
		$this->load->helper('form');
		$this->load->library('form_validation');
		$this->load->model('causas_model');
		$this->load->model('tablas_model');
		$this->load->library('my_library');
		$this->load->helper('text');
                $this->load->helper('date');
		
	}
	function index()
    {   
        $data['levelUser'] = $this->session->userdata('nivel');                
        if( $data['levelUser'] == '1')
        {
        	$this->load->view('mod_tablas/indexAdmin');
        	$this->tablas_model->clean_table();
        }
        else
        {
 			$fecha_actual = mdate('%Y-%m-%d');
                        $ultima_fecha = $this->tablas_model->get_last_fecha($fecha_actual);
 			if(empty($ultima_fecha))
 			{
 				$data['msj_error'] = "<div align ='center' class='msj_error'>No existen tablas almacenadas.</div>";
 				$this->load->view('mod_tablas/no_data',$data);
 			}
 			else
 			{
	 			$ultima_fecha = $ultima_fecha->fecha_creacion;
	 			$data['id_tabla'] = $this->tablas_model->get_id_fecha($ultima_fecha);
	 			$data['id_tabla'] = $data['id_tabla']->id_tabla;
	 			$data['resultados'] = $this->tablas_model->get_tabla($data['id_tabla']);
                                $data['siguiente'] ="";
                                $data['ocultar']="0";
	 			$data['fecha_iniciacion'] = $ultima_fecha;
				$this->load->view('mod_tablas/index',$data);       	
 			}       
        }
    }
    
    function validRol()
    {	
    	if($this->uri->segment(4) == 0){
    	$config = array(
               array(
                     'field'   => 'rol_tabla',
                     'label'   => 'Rol',
                     'rules'   => 'required'
                  ),
                  array(
                     'field'   => 'fecha_tabla',
                     'label'   => 'Fecha de Creación',
                     'rules'   => 'required'
                  ),
                  array(
                     'field'   => 'hora',
                     'label'   => 'Hora',
                     'rules'   => 'required'
                  ), 
                  array(
                     'field'   => 'presidente_tabla',
                     'label'   => 'Presidente',
                     'rules'   => 'required'
                  ));
    	}
    	if($this->uri->segment(4) == 1)
    	{
    		$config = array(
               array(
                     'field'   => 'rol_tabla_edit',
                     'label'   => 'Rol',
                     'rules'   => 'required'
                  ),
                  array(
                     'field'   => 'fecha_tabla_edit',
                     'label'   => 'Fecha de Creación',
                     'rules'   => 'required'
                  ),
                  array(
                     'field'   => 'hora_edit',
                     'label'   => 'Hora',
                     'rules'   => 'required'
                  ),
                   array(
                     'field'   => 'presidente_tabla_edit',
                     'label'   => 'Presidente',
                     'rules'   => 'required'
                  ));
    	}
	    $this->form_validation->set_rules($config);
        
        if($this->form_validation->run() == FALSE)
        {
             echo validation_errors("<div class='msj_error'>","</div>");
        }
        else
        {

        	$fecha = $this->input->post('fecha_tabla');
        	$id_tabla_Fecha = $this->tablas_model->get_id_fecha($fecha);
        	if(!empty($id_tabla_Fecha))
			{
				echo "<script languaje=\"javascript\">alert('Existe una tabla con la fecha de creación ingresada')</script>";
				$this->tablas_model->clean_table(); 
				
			}
			else
			{
				$opcion = $this->uri->segment(4);
        		$this->showRol_list($opcion);
			}
        	
        }
    	
    }
    
    function showRol_list($opcion)
    {
    	if($opcion == 0){
	    	$rol = $this->input->post('rol_tabla');
	    	if($this->causas_model->getCausaRol($rol))
	    	{
	    		$materiaArray = $this->tablas_model->get_materia($rol);
	    		if(empty($materiaArray))
	    		{
	    			echo "<div class='msj_error'>Rol no existe en nuestros registros</div>";
	    		}
	    		else{
	    			
	    			$materia = $materiaArray->materia;
	    			$fecha_creacion = $this->input->post('fecha_tabla');
	    			$fecha_ejecucion = $this->input->post('fecha_tabla_ejec');
	    			$relator = $this->input->post('relator_tabla');
	    			$presidente = $this->input->post('presidente_tabla');
	    			$hora = $this->input->post('hora');
	    			
		    		$data = array(
				    		'rol_causa'			=>	$rol, 
					 		'materia_causa'		=>	$materia,
		    				'fecha_creacion'	=>	$fecha_creacion,
		    				'fecha_ejecucion'	=>	$fecha_ejecucion,
		    				'relator'			=>	$relator,
		    				'presidente'		=>	$presidente,
		    				'hora'			  	=>	$hora
					 	);
					if($this->tablas_model->insert_tabla($data))
					{
						$data['roles'] = $this->tablas_model->rol_list();
						$data['formulario_ingreso']="";
						$data['botonera']="";
						$data['opt'] = 0;
						$this->load->view('mod_tablas/lista_roles',$data);
					}
					else
					{
						echo "<div class='msj_error'>Error al generar lista de roles, presione F5 e intente nuevamente</div>";
						
					}
	    		}
	    	}
	    	else
	    	{
	    		echo '<div class="msj_error" align="center">Rol no existe en nuestros registros</div>';
	    	}
    	}
    	else
    	{
    		$rol = $this->input->post('rol_tabla_edit');
	    	if($this->causas_model->getCausaRol($rol))
	    	{
	    		$materiaArray = $this->tablas_model->get_materia($rol);
	    		if(empty($materiaArray))
	    		{
	    			echo "<div class='msj_error'>Rol no existe en nuestros registros</div>";
	    		}
	    		else{
	    			
	    			$materia = $materiaArray->materia;
	    			$fecha_creacion = $this->input->post('fecha_tabla_edit');
	    			$fecha_ejecucion = $this->input->post('fecha_tabla_ejec_edit');
	    			$relator = $this->input->post('relator_tabla_edit');
	    			$presidente = $this->input->post('presidente_tabla_edit');
	    			$hora = $this->input->post('hora');
	    			
		    		$data = array(
				    		'rol_causa'			=>	$rol, 
					 		'materia_causa'		=>	$materia,
		    				'fecha_creacion'	=>	$fecha_creacion,
		    				'fecha_ejecucion'	=>	$fecha_ejecucion,
		    				'relator'			=>	$relator,
		    				'presidente'		=>	$presidente,
		    				'hora'			  	=>	$hora
					 	);
					if($this->tablas_model->insert_tabla($data))
					{
						$data['roles'] = $this->tablas_model->rol_list();
						$data['formulario_ingreso']="";
						$data['botonera']="";
						$data['opt'] = 1;
						$this->load->view('mod_tablas/lista_roles',$data);
					}
					else
					{
						echo "<div class='msj_error'>Error al generar lista de roles, presione F5 e intente nuevamente</div>";
						
					}
	    		}
	    	}
	    	else
	    	{
	    		echo '<div class="msj_error" align="center">Rol no existe en nuestros registros</div>';
	    	}
    	}
    }
    
    function delete_rol()
    {
    	$id = $this->uri->segment(4);
    	$this->tablas_model->borra_fila_list($id);
    	$data['roles'] = $this->tablas_model->rol_list();
    	if($this->uri->segment(5) == 1)
    	{
	    	$data['formulario_ingreso']="";
			$data['botonera']="";
			$data['opt']=1;
			$this->load->view('mod_tablas/lista_roles',$data);
    	}
    	else
    	{
    		$data['formulario_ingreso']="";
			$data['botonera']="";
			$data['opt']=0;
			$this->load->view('mod_tablas/lista_roles',$data);
    	}
    }
    
    function store_tabla()
    {
    	$rol_list = $this->tablas_model->rol_list();
    	$total_rows = $rol_list->num_rows();
    	if($total_rows == 0){
	    	echo '<div class="msj_error" align="center">Debe generar una tabla antes de almacenar.</div>';
    	}
    	if($total_rows != 0)
    	{
    		$fecha = $this->tablas_model->get_fecha();
	    	$hora = $this->tablas_model->get_hora();
			
	    	if($this->tablas_model->store_tabla($fecha))
	    	{
	    		if($this->tablas_model->store_tabla_detalle($fecha,$hora))
	    		{
	    			echo '<div class="msj_success" align="center">Tabla almacenada Correctamente</div>';
	    			echo '<div class="msj_success" align="center">Archivo Pdf generado click para descargar <a href="'.base_url().'/index.php?/mod_tablas/tablas/generaPdf/'.$fecha.'"><img style="cursor:pointer" src="'.base_url().'system/application/views/images/icons/stencil_pdf_icon.gif" alt="pdf"/></a></div>';
	    			$this->tablas_model->clean_table();
	    		}
	    	}
    	}
    }
    
	function generaPdf()
    {
    	
    	$this->load->plugin('to_pdf');
    	$this->load->helper('file');
    	$fecha = $this->uri->segment(4);
    	$id_tabla_generada = $this->tablas_model->get_id_fecha($fecha);
    	$id_tabla = $id_tabla_generada->id_tabla;
    	
    	$data['fecha_creacion'] = $fecha;
    	
    	$fecha_ejecucion = $this->uri->segment(5);
    	$hora = $this->uri->segment(6);
    	$data['presidente'] = $this->tablas_model->get_presidente($id_tabla);
    	
    	if(empty($fecha_ejecucion) && empty($hora))
    	{
    		$data['fecha_ejecucion'] = $this->tablas_model->get_fecha_ejec($id_tabla);
    		$data['hora'] = $this->tablas_model->get_hora_tabla($id_tabla);
    		$data['relator'] = $this->tablas_model->get_relator($id_tabla);
    		
    	}
    	else
    	{
    		$data['fecha_ejecucion'] = $this->uri->segment(5);
    		$data['hora'] = $this->uri->segment(6);
    		$data['relator'] = $this->uri->segment(7);
    	}	
    	
    	$data['results'] = $this->tablas_model->get_tabla($id_tabla);
    	$this->load->view('mod_tablas/pdfView',$data);
    	$html = $this->output->get_output();
    	$nombre = 'tabla_'.$fecha;
    	$orientacion = 'portrait';
    	pdf_create($orientacion,$html, $nombre);
    	
    }
    
	function valida_tabla_edit()
    {
    	$config = array(
    		array(
                     'field'   => 'fecha_tabla_edit',
                     'label'   => 'Fecha',
                     'rules'   => 'required'
                  ));
        
        $this->form_validation->set_rules($config);
        
        if($this->form_validation->run() == FALSE)
        {
             echo validation_errors('<div class="msj_error" align="center">','</div>');
        }
        else
        {
    		$this->tablas_model->clean_table();
        	$this->edit_tabla();
        } 
    }
    
    function edit_tabla()
    {
    	$fecha_creacion = $this->input->post('fecha_tabla_edit');
    	$id_tabla = $this->tablas_model->get_id_fecha($fecha_creacion);
    	if(empty($id_tabla))
    	{
    		echo '<div class="msj_error" align="center">No existe tabla para la fecha indicada.</div>';
    	}
    	else
    	{
    		$id_tabla = $id_tabla->id_tabla;
    		$this->show_html_data(1,$id_tabla);
    	}
    	
    }
    function show_html_data($opcion,$id_tabla)
    {
    	if($opcion == 1){
	    	$data['fecha_creacion'] = $this->input->post('fecha_tabla_edit');
	    	$data['resultados'] = $this->tablas_model->get_tabla($id_tabla);
	    	
	    		foreach($data['resultados'] ->result() as $row)
			    {
			    		$data = array(
			    			'rol_causa' => $row->rol_causa, 
				 			'materia_causa' => $row->materia,
				 			'fecha_ejecucion' =>$row->fecha_ejecucion,
			    			'fecha_creacion' =>$data['fecha_creacion'], 
							'relator' => $row->relator,
			    			'presidente' => $row->presidente,
			    			'hora' => $row->hora
			    		);
			    		$this->tablas_model->insert_tabla($data);
			    }
	    		$data['roles'] = $this->tablas_model->rol_list();
	    		foreach($data['roles'] ->result() as $row){
	    		$data['formulario_ingreso'] = '<form id="addTablas_edit" method="post">
												<fieldset>
												<table>
													<tr>
														<td>Rol:</td><td><input type="text" name="rol_tabla_edit" id="rol_tabla_edit" size="10"/><div id="hint1"></div></td>
														<td>Fecha Creación:</td><td><input type="text" id="fecha_tabla_edit" name="fecha_tabla_edit" size="7" value="'.$row->fecha_creacion.'" readonly="readonly"/></td>
														<td>Hora:</td><td><input type="text" id="hora_edit" name="hora_edit" size="5" value="'.$row->hora.'"/></td>
													</tr>
													<tr>
														<td>Relator:</td><td><input type="text" id="relator_tabla_edit" name ="relator_tabla_edit" value="'.$row->relator.'" /></td>
														<td>Fecha ejecución:</td><td><input type="text" id="fecha_tabla_ejec_edit" name="fecha_tabla_ejec_edit" size="7" value="'.$row->fecha_ejecucion.'"/><input type="button" id="lanzador_ejec_edit" value="..."/></td>
														<td></td><td></td>
														
													</tr>
													<tr>
													<td>Presidente:</td><td><input type="text" id="presidente_tabla_edit" name ="presidente_tabla_edit" value="'.$row->presidente.'"/></td><td colspan="4" align="right"><input type="button" value="Ingresar" onclick="javascript:tablasFunctions(1,1,0);" /></td>
													</tr>
												</table>
												</fieldset>
											</form><br />';
	    		}
	    		$data['botonera'] = '<form>
									<fieldset>
									<table>
										<tr>
											<td><input id="buttonCausa_tabla_edit" type="button" name="buttonCausa_tabla_edit" value="Editar Tabla" onClick="javascript:tablasFunctions(1,5,0);"/><input type="reset" value="Limpiar"/></td>
										</tr>
									</table>
									</fieldset>
								</form><script type="text/javascript">
									new Ajax.Autocompleter("rol_tabla_edit","hint1",base_url+"mod_causas/delCausa/getRol/6");
									Calendar.setup({
								    inputField     :    "fecha_tabla_ejec_edit",     // id del campo de texto
								    ifFormat     :     "%Y-%m-%d",     // formato de la fecha que se escriba en el campo de texto
								    button     :    "lanzador_ejec_edit"    // el id del botón que lanzará el calendario
							
								});
								</script>';
	    		$data['opt'] = 1;
	    		$this->load->view('mod_tablas/lista_roles',$data);
    	}
    }
    
    function edit_tabla_selec()
    {
    	$rol_list = $this->tablas_model->rol_list();
    	$total_rows = $rol_list->num_rows();
    	if($total_rows == 0)
    	{
	    	echo '<div class="msj_error" align="center">Debe generar una tabla antes de almacenar.</div>';
    	}
    	if($total_rows != 0)
    	{
    		$fecha = $this->tablas_model->get_fecha();
	    	$hora = $this->input->post('hora_edit');
	    	$relator = $this->input->post('relator_tabla_edit');
	    	$presidente = $this->input->post('presidente_tabla_edit');
	    	
			$id_tabla = $this->tablas_model->get_id_fecha($fecha);
			$id_tabla = $id_tabla->id_tabla;
			$fecha_ejecucion = $this->input->post('fecha_tabla_ejec_edit');
	    	if($this->tablas_model->edit_store_tabla_detalle($fecha,$hora,$id_tabla,$fecha_ejecucion,$presidente))
	    		{
	    			echo '<div class="msj_success" align="center">Tabla almacenada Correctamente</div>';
	    			echo '<div class="msj_success" align="center">Archivo Pdf generado click para descargar <a href="'.base_url().'/index.php?/mod_tablas/tablas/generaPdf/'.$fecha.'/'.$fecha_ejecucion.'/'.$hora.'/'.$relator.'/"><img style="cursor:pointer" src="'.base_url().'system/application/views/images/icons/stencil_pdf_icon.gif" alt="pdf"/></a></div>';
	    			$this->tablas_model->clean_table();
	    		}
	    }
    }
    
    function delete_tabla()
    {
    	$config = array(
               array(
                     'field'   => 'fecha_tabla_delete',
                     'label'   => 'Fecha',
                     'rules'   => 'required'
                  ));
	    $this->form_validation->set_rules($config);

        if($this->form_validation->run() == FALSE)
        {
             echo validation_errors('<div class="msj_error" align="center">','</div>');
        }
        else
        {		
	    	$fecha = $this->input->post('fecha_tabla_delete');
	    	$id_tabla = $this->tablas_model->get_id_fecha($fecha);
	    	if(!empty($id_tabla))
	    	{
	    		$id_tabla = $id_tabla->id_tabla;
		    	if($this->tablas_model->delete_tabla($id_tabla))
				{
					echo '<div class="msj_success" align="center">Tabla eliminada con exito.</div>';
					
				}
				else
				{
					echo "<div class='msj_error'>Error mientras se eliminaba  tabla para la fecha : ".$fecha.".</div>";
					
				}
	    	}
	    	else
	    	{
	    		echo "<div class='msj_error' align='center'>No existe  tabla para la fecha : ".$fecha.".</div>";
	    		
	    	}
        }
    }
    
    function show_tabla_selec()
    {
    	$data['fecha_creacion'] = $this->input->post('fecha_tabla_seg_index');
    	$id_tabla = $this->tablas_model->get_id_fecha($data['fecha_creacion']);
    	if(!empty($id_tabla))
	    {
    		$id_tabla = $id_tabla->id_tabla;
	    	if($data['results'] = $this->tablas_model->get_tabla_total($id_tabla))
			{
				$data['presidente'] = $this->tablas_model->get_presidente($id_tabla);
				$data['relator'] = $this->tablas_model->get_relator($id_tabla);
				$data['hora'] = $this->tablas_model->get_hora_tabla($id_tabla);
				$data['fecha_ejecucion'] = $this->tablas_model->get_fecha_ejec($id_tabla);
				
				
				$this->load->view('mod_tablas/uView',$data);
				
			}
			else
			{
				echo "<div class='msj_error'>Error mientras se eliminaba  tabla para la fecha : ".$data['fecha_creacion'].".</div>";
				
			}
	    }
	    else
	    {
	    	echo "<div class='msj_error' align='center'>No existe  tabla para la fecha : ".$data['fecha_creacion'].".</div>";		
	    }
    }

    function anterior()
    {
       /*Ontenemos la Fecha de creación de la tabla mostrada*/
        $fechaTabla = $this->uri->segment(4);
        /*Obtendremos los datos de la tabla inmediatamente anterior a la tabla en pantalla*/
        $idAnterior = $this->tablas_model->getIdTablaAnterior($fechaTabla);
        /*Verificamos Límites*/
        $primerId = $this->tablas_model->getFirstId();
        /*
              * Veridicaremos que el id exista para poder generar la consulta
              */

        $verifica_id = $this->tablas_model->verificaId($idAnterior);

        while($verifica_id ->num_rows() == 0):
            $verifica_id = $this->tablas_model->verificaId($idAnterior);
            $idAnterior = $idAnterior - 1;
            if($idAnterior <= $primerId):
                break;
            endif;
        endwhile;

        if($idAnterior <= $primerId):
            $idAnterior = $primerId;
            $data['ocultar'] = 1;
         else:
            $data['ocultar'] = 0;
         endif;
        $data['id_tabla'] = $idAnterior;
        $data['resultados'] = $this->tablas_model->get_tabla($idAnterior);
        $data['fecha_iniciacion'] = $this->tablas_model->getFechaCreacion($idAnterior);
        $this->load->view('mod_tablas/anterior',$data);
    }
    function siguiente()
    {
       /*Ontenemos la Fecha de creación de la tabla mostrada*/
        $fechaTabla = $this->uri->segment(4);
        /*Obtendremos los datos de la tabla inmediatamente despues a la tabla en pantalla*/
        $idSiguiente = $this->tablas_model->getIdTablaSiguiente($fechaTabla);
        /*Verificamos Límites*/
        $ultimoId = $this->tablas_model->getLastId();
        /*
              * Veridicaremos que el id exista para poder generar la consulta
              */

        $verifica_id = $this->tablas_model->verificaId($idSiguiente);

        while($verifica_id ->num_rows() == 0):
            $verifica_id = $this->tablas_model->verificaId($idSiguiente);
            $idSiguiente = $idSiguiente + 1;
            if($idSiguiente >= $ultimoId):
                break;
            endif;
        endwhile;

        if($idSiguiente >= $ultimoId):
            $idSiguiente = $ultimoId;
            $data['ocultar'] = 2;
         else:
            $data['ocultar'] = 0;
         endif;
        $data['id_tabla'] = $idSiguiente;
        $data['resultados'] = $this->tablas_model->get_tabla($idSiguiente);
        $data['fecha_iniciacion'] = $this->tablas_model->getFechaCreacion($idSiguiente);
        $this->load->view('mod_tablas/anterior',$data);
    }
}

?>